package vip.xiaonuo.invoice.core.adapter.dto.request;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;

import java.util.List;

/**
 * 发票请求参数
 *
 * @author AI Assistant
 */
@Getter
@Setter
public class InvoiceRequestDtoOfShuZu extends InvoiceRequestDto {

    @Schema(description = "发票清晰流水号")
    private String fpqqlsh;

    @Schema(description = "发票类型代码")
    private String fplxdm;

    @Schema(description = "销方名称")
    private String xfmc;

    @Schema(description = "销方税号")
    private String xfsh;

    @Schema(description = "销方地址")
    private String xfdz;

    @Schema(description = "销方开户行")
    private String xfkhh;

    @Schema(description = "销方联系方式")
    private String xflxdh;

    @Schema(description = "销方银行账号")
    private String xfyhzh;

    @Schema(description = "购方名称")
    private String gfmc;

    @Schema(description = "购方税号")
    private String gfsh;

    @Schema(description = "购方地址")
    private String gfdz;

    @Schema(description = "购方联系电话")
    private String gflxdh;

    @Schema(description = "购方银行账号")
    private String gfyhzh;

    @Schema(description = "手机号码(发票结果发送)")
    private String sjhm;

    @Schema(description = "邮箱地址(发票结果发送)")
    private String yxdz;

    @Schema(description = "商品明细列表")
    private List<mxList> mxListList;

    @Schema(description = "含税标志 0:不含税 1:含税")
    private String hsbz;

    @Schema(description = "特定要素类型代码")
    private String tdyslxdm;

//    /** 回调URL - 开票结果通知地址 */
//    @Schema(description = "回调URL")
//    private String callbackUrl;


    @Schema(description = "备注信息")
    private String bz;


    @Schema(description = "停车详情信息")
    private bdcjyzlfw bdcjyzlfw;

    @Getter
    @Setter
    public static class bdcjyzlfw {

        /**
         * 房屋产权证书/不动产权证书号码
         */
        @Schema(description = "房屋产权证书/不动产权证书号码")
        private String fwcqzshm;

        /**
         * 不动产地址
         */
        @Schema(description = "不动产地址")
        private String bdcdz;

        /**
         * 租赁期起
         */
        @Schema(description = "租赁期起，格式:yyyyMMdd")
        private String zlqq;

        /**
         * 租赁期止
         */
        @Schema(description = "租赁期止，格式:yyyyMMdd")
        private String zlqz;

        /**
         * 跨地市标志
         */
        @Schema(description = "跨地市标志，0:否 1:是")
        private String kdsbz;

        /**
         * 面积单位
         */
        @Schema(description = "面积单位")
        private String mjdw;
    }


    /**
     * 商品明细内部类
     */
    @Getter
    @Setter
    public static class mxList {

        /**
         * 商品名称
         */
        @Schema(description = "商品名称")
        private String spmc;

        /**
         * 商品编码
         */
        @Schema(description = "商品编码")
        private String spbm;

//        /** 数量 */
//        @Schema(description = "数量")
//        private String quantity;
//
//        /** 单价 */
//        @Schema(description = "单价")
//        private String unitPrice;

        /**
         * 金额
         */
        @Schema(description = "含税金额")
        private String je;

        /**
         * 税率
         */
        @Schema(description = "税率")
        private String sl;

        /**
         * 税额
         */
        @Schema(description = "税额")
        private String se;

        /**
         * 优惠政策标识
         */
        @Schema(description = "优惠政策标识")
        private String yhzcbs;

        /**
         * 优惠政策标识
         */
        @Schema(description = "税率标识")
        private String lslbs;

        /**
         * 优惠政策标识
         */
        @Schema(description = "增值税特殊管理标识")
        private String zzstsgl;
    }
}
